package de.unicornEntertainment.stundenplanapp.threadTools;

import java.util.HashMap;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import android.content.Intent;
import android.os.AsyncTask;
import android.view.View;
import android.widget.AdapterView;
import android.widget.SimpleAdapter;
import android.widget.AdapterView.OnItemClickListener;
import de.unicornEntertainment.stundenplanapp.R;
import de.unicornEntertainment.stundenplanapp.lehreruebersicht.LehrerDetailsActivity;
import de.unicornEntertainment.stundenplanapp.lehreruebersicht.LehreruebersichtActivity;
import de.unicornEntertainment.stundenplanapp.login.ActivityLogin;
import de.unicornEntertainment.stundenplanapp.stundenplan.KlassenlisteActivity;
import de.unicornEntertainment.stundenplanapp.stundenplan.StundenplanDetailsActivity;
import de.unicornEntertainment.stundenplanapp.util.JSONParser;

public class MyAsyncTask_Klassenliste extends AsyncTask {

	// Globale Deklaration
	private KlassenlisteActivity context;
	private JSONArray klassen;
	
	
	// JSON Nodes
	private static final String TAG_KLASSEN = "klassen";
	private static final String TAG_BEZEICHNUNG = "bezeichnung";
	
	private static String url = "http://gruppef.green-lagoon.de/login.php?user="+ActivityLogin.getUser()+"&passwort="+ActivityLogin.getPass();
	
	// Konstruktor
	public MyAsyncTask_Klassenliste(KlassenlisteActivity context) {
		this.context = context;
	}

	/**
	 * Hintergrundverarbeitung in ausgelagertem Thread
	 */
	@Override
	protected Object doInBackground(Object... arg0) {
		try {
			// JSON Parser instanziieren
			JSONParser jParser = new JSONParser();
			
			// JSON als String von URL abgreifen
			url = url+"&head=klassenliste";
			System.out.println(url);
			JSONObject klassenliste = jParser.getJSONFromUrl(url);
			
			System.out.println("JSON: " + klassenliste.toString());
			
			// JSON-Array mit allen Klassen abrufen
            klassen = klassenliste.getJSONArray(TAG_KLASSEN);
            
            System.out.println("Anzahl Klassen im JSON-Array: " + klassen.length());
            
            // Über alle Klassen iterieren
            for(int i = 0; i < klassen.length(); i++){
                JSONObject klasse = klassen.getJSONObject(i);
                 
                // Jedes JSON-Item in eine Variable stellen
                String klassenname = klasse.getString(TAG_BEZEICHNUNG);
                 
                // Eine neue HashMap erzeugen
                HashMap<String, String> map = new HashMap<String, String>();
                
                // adding each child node to HashMap key => value
                map.put(TAG_BEZEICHNUNG, klassenname);
                
//                System.out.println("HashMap-Inhalt: " + map);
                
                // HashMap zu ArrayList hinzufügen
                context.getKlassen().add(map);
                
//                System.out.println("ArrayListe mit Klassen: " + context.getKlassen());
			}
		}
		catch(JSONException e) {
			e.printStackTrace();
			
			// Dialog im Fehlerfall entlassen
			context.getPrg().dismiss();
		}
		return null;
	}
	
	/**
	 * Wird nach der Hintergrundarbeit ausgeführt.
	 */
	@Override
	protected void onPostExecute(Object result) {
		/**
         * Die Daten aus den JSON-Objekten an den Adapter übergeben.
         * 
         */
        context.setAdapter(new SimpleAdapter(context, context.getKlassen(),
                R.layout.klassenliste_listview_row,
                new String[] {TAG_BEZEICHNUNG}, new int[] {
                        R.id.klassenliste_textview_klassenname}));
        
        // Adapter in der ListView registrieren 
        context.getKlassenliste().setAdapter(context.getAdapter());
        
     // selecting single ListView item
        context.getKlassenliste().setOnItemClickListener(new OnItemClickListener() {
 
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
            	
            	// Werte auslesen und zuweisen
                HashMap<String, String> klasse = (HashMap<String, String>) parent.getAdapter().getItem(position);

                String klassenbez = klasse.get("bezeichnung").toString();
                
                // Intent vorbereiten
                Intent intent = new Intent(context, StundenplanDetailsActivity.class);
                intent.putExtra("klasse", klassenbez);
                context.startActivity(intent);
            }
        });

        // Dialog entlassen
        context.getPrg().dismiss();
	}

}
